package aiguigu4.search_sort;

/**
 * ClassName: BinarySearchTest
 * Package: aiguigu4.search_sort
 * Description:案例2：二分查找(数组元素必须是有序的，这个是前提，如果不是，则需要进行排序 )
 *
 * @Author ZY
 * @Create 2024/9/15 23:23
 * @Version 1.0
 */
public class BinarySearchTest {
    public static void main(String[] args) {
        int[] arr2 = new int[]{2,4,5,8,12,15,19,26,37,49,51,66,89,100};

        int target = 26;//目标元素

        int head = 0;//默认的首索引
        int end = arr2.length - 1;//默认的尾索引

        boolean isFlag = false;//判断是否找到了指定元素
        int count = 0;//计算查找次数
        while (head <= end){

            int middle = (head + end) / 2;//计算中间索引
//            System.out.println("此时middle为:" + middle);//可以不写
            count++;// 每次循环时，查找次数加1
            if (target == arr2[middle]){
                System.out.println("找到了" + target + "，对应的位置为:" + middle);
//                System.out.println("查找次数为:" + count);//可以不写
                isFlag = true;
                break;
                // 如果目标值大于中间位置的元素，调整起始索引为中间索引的下一个位置
            }else if (target > arr2[middle]) {
                head = middle + 1;//索引位+1继续往后找
//                System.out.println("此时head为:" + head);//可以不写
                // 如果目标值小于中间位置的元素，调整结束索引为中间索引的前一个位置
            }else{//target < arr2[middle]
                end = middle - 1;//索引位-1继续往前找
//                System.out.println("此时end为:" + end);//可以不写
            }
        }
        if (!isFlag){
            System.out.println("未找到");
        }
    }
}
